package com.ruoyi.collect.api.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.web.oldDomain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

/**
 * @Description: 采集商品
 * @Author: j.zh
 * @Date: 2024/5/16
 * @Version: 4.0.0
**/

@Data
@EqualsAndHashCode(callSuper = true)
public class ErpKakaCollectProductBo extends BaseEntity {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 商品所属类目ID;商品所属类目ID。必须是叶子类目，通过类目接口获取。
     */
    @NotNull(message = "商品所属类目ID", groups = { AddGroup.class, EditGroup.class })
    private Long categoryId;

    /**
     * 产品的主图URL列表;产品的主图URL列表。如果这个产品有多张主图，那么这些URL之间使用英文分号(";")隔开。一个产品最多只能有6张主图。图片格式JPEG，文件大小5M以内；图片像素建议大于800*800；横向和纵向比例建议1:1到1:1.3之间；图片中产品主体占比建议大于70%；背景白色或纯色，风格统一；如果有LOGO，建议放置在左上角，不宜过大。不建议自行添加促销标签或文字。切勿盗用他人图片，以免受网规处罚。更多说明请至http://seller.aliexpress.com/so/tupianguifan.php进行了解。
     */
    @NotBlank(message = "产品的主图URL列表", groups = { AddGroup.class, EditGroup.class })
    private String imageURLs;

    /**
     * 商品标题;商品标题 长度在1-128之间英文（ascii码从00到7F），不允许有<.*?>这几个字符。
     */
    @NotBlank(message = "商品标题", groups = { AddGroup.class, EditGroup.class })
    private String subject;

    /**
     * 白底图
     */
    @NotBlank(message = "白底图不能为空", groups = { AddGroup.class, EditGroup.class })
    private String white;

    /**
     * 营销图
     */
    @NotBlank(message = "营销图不能为空", groups = { AddGroup.class, EditGroup.class })
    private String marketing;

    /**
     * 商品视频
     */
    @NotBlank(message = "商品视频不能为空", groups = { AddGroup.class, EditGroup.class })
    private String media;

    /**
     * 采集价格
     */
    @NotBlank(message = "采集价格不能为空", groups = { AddGroup.class, EditGroup.class })
    private String collectProductPrice;

    /**
     * 商品一口价;商品一口价。取值范围:0-100000,保留两位小数;单位:美元。如:200.07，表示:200美元7分。需要在正确的价格区间内。上传多属性产品的时候，有好几个SKU和价格，productprice无需填写。
     */
    @NotBlank(message = "商品一口价", groups = { AddGroup.class, EditGroup.class })
    private String productPrice;

    /**
     * 商品无线端详情;mobile Detail详情，格式请参考https://developers.aliexpress.com/doc.htm#?docType=1&docId=108598。
     */
    @NotBlank(message = "商品无线端详情", groups = { AddGroup.class, EditGroup.class })
    private String mobileDetail;

    /**
     * 商品包装长度;商品包装长度。取值范围:1-700,单位:厘米。产品包装尺寸的最大值+2×（第二大值+第三大值）不能超过2700厘米。
     */
    @NotNull(message = "商品包装长度", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal packageLength;

    /**
     * 商品包装宽度;商品包装宽度。取值范围:1-700,单位:厘米。
     */
    @NotBlank(message = "商品包装宽度", groups = { AddGroup.class, EditGroup.class })
    private String packageWidth;

    /**
     * 商品包装高度;商品包装高度。取值范围:1-700,单位:厘米。
     */
    @NotNull(message = "商品包装高度", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal packageHeight;

    /**
     * 商品毛重;商品毛重,取值范围:0.001-500.000,保留三位小数,采用进位制,单位:公斤。
     */
    @NotBlank(message = "商品毛重", groups = { AddGroup.class, EditGroup.class })
    private String grossWeight;

    /**
     * 商品单位;参考数据字典AE_PRODUCT_UNIT（商品单位）
     */
    @NotNull(message = "商品单位", groups = { AddGroup.class, EditGroup.class })
    private Long productUnit;

    /**
     * 自定义属性;产品属性，以json格式进行封装后提交。
     */
    @NotBlank(message = "自定义属性", groups = { AddGroup.class, EditGroup.class })
    private String customAttributes;

    /**
     * 详情
     */
    @NotBlank(message = "详情", groups = { AddGroup.class, EditGroup.class })
    private String detail;

    /**
     * 详情图片
     */
    @NotBlank(message = "详情图片", groups = { AddGroup.class, EditGroup.class })
    private String detailImg;

    /**
     * 尺码表模版ID
     */
    @NotNull(message = "尺码表模版ID", groups = { AddGroup.class, EditGroup.class })
    private Long sizechartId;

    /**
     * 模特尺码数据;模特尺码数据，最多5个，单位厘米。hips:臀围;waist:腰围;bust:胸围;height:身高;mode_size:试穿尺码;
     */
    @NotBlank(message = "模特尺码数据", groups = { AddGroup.class, EditGroup.class })
    private String modeSizeChartList;

    /**
     * 采集链接
     */
    @NotBlank(message = "采集链接不能为空", groups = { AddGroup.class, EditGroup.class })
    private String collectUrl;

    /**
     * 采集人员id
     */
    @NotNull(message = "采集人员id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long collectUserId;

    /**
     * 采集详情图
     */
    @NotBlank(message = "采集详情图不能为空", groups = { AddGroup.class, EditGroup.class })
    private String oldDetailImg;

    /**
     * 乐观锁
     */
    @NotBlank(message = "乐观锁不能为空", groups = { AddGroup.class, EditGroup.class })
    private String revision;

    /**
     * 商品操作类型（1采集不可见，商家自采集 2采集可见，已出单 3商家不可编辑）
     */
    @NotBlank(message = "商品操作类型（1采集不可见，商家自采集 2采集可见，已出单 3商家不可编辑）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String operateType;


}
